home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Purity
/
Purity #22 (1994-01-19)(Diesel)(DE)[WB].zip
/
Purity #22 (1994-01-19)(Diesel)(DE)[WB].adf
/
Cryptor
/
Cryptor.p
< prev
next >
Wrap
Text File
|
1994-01-17
|
3KB
|
152 lines
{ ****** Auto-Revision (do NOT edit) ********************
*
* © Copyright by BOMBERSOFT
*
* Filename : Pascal:Quellcodes/Cryptor.p
* Created on : 19.12.1993
* Created by : Björn Schotte
* Current revision : V1.10
*
*
* Purpose: De-/Kodieren von Dateien
*
*
* V1.10 : 19.12.1993 : Nochmal etwas überarbeitet
* (Öffnen-Prozedur geschrieben).
*
* V0.000 : 19.12.1993 : - Initial release -
******************************************************* }
{$Incl "CLI.i",
"libraries/dos.h"}
CONST
fe = #27"[1m";
ku = #27"[3m";
un = #27"[4m";
no = #27"[0m";
ora= #27"[33m";
sc = #27"[31m";
VAR
code : LongInt;
i : Integer;
f,f1 : Text;
c : Char;
x : Integer;
args : Array[1..4] Of String[80];
decode : Boolean;
{*********************************************************
** Kreiert den Code, indem es zum Code den ASCII-Code **
** jedes einzelnen Zeichens des Passworts dazuaddiert **
** und dann nochmal die Länge des Passworts. **
*********************************************************}
FUNCTION FormPasswort(passwort:STRING) : LONGINT;
VAR
code : LongInt;
BEGIN
code := 0;
FOR i:=1 TO length(passwort) DO
code := code+Ord(passwort[i]);
code := code + Length(passwort);
FormPasswort := code;
END;
{*********************************************************
** Öffnet die Dateien. **
*********************************************************}
PROCEDURE Öffnen(source, ziel : STRING);
BEGIN
Reset(f, source);
IF IOResult = 0 THEN
BEGIN
ReWrite(f1, ziel);
IF IOResult = 0 THEN
BEGIN
Buffer(f, 10000);
END ELSE
BEGIN
Close(f);
Writeln("Kann die Datei '",ziel,"' nicht anlegen !!");
HALT(20);
END;
END ELSE
BEGIN
Writeln("Kann die Datei '",source,"' nicht öffnen !!!");
HALT(20);
END;
END;
PROCEDURE Codiere(passwort,source,ziel : String);
BEGIN
code := FormPasswort(passwort);
Öffnen(source, ziel);
WHILE NOT Eof(f) DO
BEGIN
Read(f,c); (* Zeichen lesen *)
x:=Ord(c); (* ASCII-Code *)
x:=x+code; (* Code dazuaddieren *)
REPEAT
(* x > 255 ? Dann 255 abziehen *)
If x>255 Then x:=x-255;
UNTIL x IN [0..255];
Write(f1,Chr(x));
END;
Close(f1);
Close(f);
END;
PROCEDURE Decodiere(passwort,source,ziel : String);
VAR xx,yy,cc : STRING;
l : Integer;
BEGIN
Öffnen(source, ziel);
code:=FormPasswort(passwort);
WHILE NOT Eof(f) DO
BEGIN
Read(f,c);
x:=Ord(c);
x:=x-code;
REPEAT
If x<0 Then x:=x+255;
UNTIL x IN [0..255];
Write(f1,Chr(x));
END;
Close(f1);
Close(f);
END;
PROCEDURE Use;
BEGIN
WriteLn;
WriteLn(un,fe,ora,"Cryptor V1.10 ",sc,"1993 by Björn Schotte",no);
WriteLn;
WriteLn(fe,"F R E E W A R E",no);
WriteLn;
WriteLn;
WriteLn(ku,"USAGE: ",no,ora,"Cryptor <Passwort> <d|k> <source> <ziel>");
WriteLn;
WriteLn(no,"d : Dekodieren");
WriteLn("k : Kodieren");
WriteLn("Source : Quelldatei");
WriteLn("Ziel : Zieldatei");
HALT(0);
END;
BEGIN
IF ParameterLen = 0 THEN Use;
IF ArgNum < 4 THEN Use;
FOR i := 1 To 4 DO args[i] := GetArg(i);
CASE args[2][1] OF
"d","D" : decode := True;
"k","K" : decode := False;
ELSE
Use;
END;
IF (decode = False) THEN Codiere(args[1],args[3],args[4])
ELSE Decodiere(args[1],args[3],args[4]);
END.